#include <stdlib.h>

int main(int, char** argv)
{
    while (1)
        // the system() function is a C library convenience wrapper
        // around fork(), exec() and wait(). it creates a child
        // process (using fork() - what else) which then exec()s the a
        // program (argv[0] is **this** program). the parent - the
        // caller of the system() function - then wait()s for the
        // child to exit.

        // it is this wait() that keeps this construct from growing
        // exponentially, as opposed to the fork bomb where each
        // branch keeps creating more and more branches. in fact, the
        // system() bomb creates a degenerated tree where each parent
        // has only one child. infinitely, though, but linear.
        system(argv[0]);
    return 0;
}
